package collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 队列
 * java.util.Queue接口，队列接口。其继承自Collection
 * 队列可以保存一组元素。但是存取元素必须遵循先进先出原则。
 *
 * 常见实现类:java.util.LinkedList
 */
public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        //offer方法是入队操作，将元素添加到队列末尾
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        queue.offer("five");
        System.out.println(queue);
        /*
            出队操作 poll
            获取队首的同时将其从队列中移除
         */
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);
        /*
            引用队首元素 peek()
            获取队首元素，获取后元素依然在队列中
         */
        str = queue.peek();
        System.out.println(str);
        System.out.println(queue);
        //队列也是集合，因此Collection中的方法依然可用
        int size = queue.size();
        System.out.println("size:"+size);
        //可以使用新循环(迭代器)遍历队列元素
        for(String e :queue){
            System.out.println(e);
        }
        System.out.println(queue);

        /*
            使用poll方法遍历队列
         */
        while(queue.size()>0){
            String e = queue.poll();
            System.out.println(e);
        }
        System.out.println(queue);
    }
}
